# 导入yfinance库
import yfinance as yf


# 定义一个函数来计算股票集中度
def concentration(tickers):
    # 创建一个空列表来存储每只股票的市值
    market_caps = []
    # 遍历所有股票代码
    for ticker in tickers:
        # 使用yfinance获取股票对象
        stock = yf.Ticker(ticker)
        # 获取股票信息（可能比较慢）
        info = stock.info
        # 获取股票市值（单位为美元）
        market_cap = info['marketCap']
        # 将市值添加到列表中
        market_caps.append(market_cap)

    # 计算所有股票市值之和
    total_market_cap = sum(market_caps)
    # 创建一个空列表来存储每只股票的集中度（占总市值的百分比）
    concentrations = []
    # 遍历所有股票市值
    for market_cap in market_caps:
        # 计算每只股票的集中度
        concentration = market_cap / total_market_cap * 100
        # 将集中度添加到列表中
        concentrations.append(concentration)

    # 返回一个包含股票代码和集中度的字典
    return dict(zip(tickers, concentrations))


# 定义一个列表来存储要计算集中度的国际指数（日经225、韩国综合指数、台湾加权指数和新加坡综合指数）
tickers = ['^N225', '^KS11', '^TWII', '^STI']
# 调用函数并打印结果
print(concentration(tickers))